//1.引入模块
var conn = require("./baseDb.js")

//向外暴露对象方法
module.exports = {
    addNewPost(post,callback){ // 添加新文章
        // 写sql语句添加数据
        var sql = "insert into posts set ?"
        conn.query(sql,[post],(err,result)=>{
            if(err) return callback(err)
            callback(null,true)
        })
    },
    getPostsData(callback){ // 获取第一页的数据
        // 执行sql语句查询前10条,以倒序排列 , 根据查询条件联表查询
        var sql = "select p.id,p.title,p.created,p.status,u.nickname,c.name from posts as p left join users as u on p.user_id=u.id left join categories as c  on  p.category_id = c.id order by p.id desc limit 10;select count(*) as count from posts"; // 只查询前10条,以倒序排列完毕后
        conn.query(sql,(err,result)=>{
            if(err) return callback(err)
            callback(null,result); // result查询的数据是一个数组
        })
    },
    getPostsDataByPage(page,callback){ // 获取当前页的文章数据
        //设置每页显示的文章条数
        var pageSize = 10
        //设置文章分页序号的公式
        var offset = (page - 1) * pageSize;
        // 执行sql语句 根据查询条件联表查询
        // var sql = "select * from posts order by id desc limit 0, 10" //查第一页的10条数据
        // var sql = "select * from posts order by id desc limit 10, 10" //查第二页的10条数据
        // var sql = "select * from posts order by id desc limit 20, 10" //查第三页的10条数据
        var sql = "select p.id,p.title,p.created,p.status,u.nickname,c.name from posts as p left join users as u on p.user_id = u.id left join categories as c on p.category_id = c.id order by p.id desc limit ?,?"
        conn.query(sql,[offset,pageSize],(err,result)=>{
            if (err) return callback(err)

            callback(null, result)
        })
    },
    delPostsById(id,callback){ // 根据id删除对应的文章数据
        // 输入sql语句删除对应的id数据
        var sql = "delete from posts where id = ?"
        conn.query(sql,[id],(err,result)=>{
            if (err) return callback(err)

            callback(null, true)
        })
    },
    getPostsInfoById(id,callback){
        //输入sql语句查询, 查询posts表中的数据和categories表中的数据
        var sql = "select * from posts where id =? ; select * from categories"
        conn.query(sql, [id], (err, result) => {
            if (err) return callback(err)
            // console.log(result);
            // callback(null,result[0]) ;// 将查询出来的数据从数组中取出来传递给控制器层
            callback(null, result);// 将查询出来的数据从数组中取出来传递给控制器层
        })
    },
    updatePostsInfoById(post,callback){
        // 获取数据中的id
        var {id} = post
        //输入sql语句更新后端数据
        var sql = "update posts set ? where id =?"
        conn.query(sql,[post,id],(err,result)=>{
            if(err) return callback(err)
            
            callback(null,true)
        })
    }
}